/**
 * 横竖屏切换辅助工具
 * 用于解决 uniapp 横竖屏切换导致的页面混乱问题
 */

// 通过空白页面中转返回指定页面
export const backToPageViaBlank = (targetUrl, delay = 50) => {
	uni.navigateTo({
		url: '/pages/blank/blank',
		success: () => {
			setTimeout(() => {
				uni.redirectTo({
					url: targetUrl
				});
			}, delay);
		}
	});
};

// 返回任意页面（通用方法）
export const backToAnyPage = (pagePath) => {
	backToPageViaBlank(pagePath);
};

// 通用的横屏页面混入
export const landscapePageMixin = {
	data() {
		return {
			pageReady: false
		}
	},
	onShow() {
		// #ifdef APP-PLUS
		// 页面显示时切换到横屏
		setTimeout(() => {
			plus.screen.lockOrientation('landscape-primary');
			// 横屏切换完成后设置页面就绪
			setTimeout(() => {
				this.pageReady = true;
			}, 300);
		}, 200);
		// #endif
		
		// #ifndef APP-PLUS
		// 非APP端直接设置页面就绪
		this.pageReady = true;
		// #endif
	},
	onUnload() {
		// #ifdef APP-PLUS
		// 页面关闭时恢复竖屏
		plus.screen.lockOrientation('portrait-primary');
		// #endif
	},
	methods: {
		// 通用的返回方法
		handleBack(targetUrl) {
			backToPageViaBlank(targetUrl);
		}
	}
};
